﻿
Partial Class Interfaz_Imagenes_frmSistemaCreaUsuarios
    Inherits System.Web.UI.Page
    Dim CL As New Logica.ModuloSistema.ControladorLogica

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        CL = Logica.ModuloSistema.ControladorLogica.getInstance

        If Not Page.IsPostBack Then
            If CL.visibilidadesFormsInternos("Sistema", Session("user").ToString) = False Then
                Response.Redirect("Index.aspx")
            End If
        End If
        

        Dim ArrayEmpleados As New ArrayList
        Dim ArrayGrupo As New ArrayList
        Dim i As Integer
        Dim nombre, apellido, rut As String

        ArrayEmpleados = CL.obtenerEmpleado()
        ArrayGrupo = CL.ObtenerGrupo()

        If Not Page.IsPostBack Then
            For i = 0 To ArrayEmpleados.Count - 1
                Dim itemEmpleado As New ListItem

                nombre = DirectCast(ArrayEmpleados.Item(i), Empleado).Nombre
                apellido = DirectCast(ArrayEmpleados.Item(i), Empleado).Apellido
                rut = DirectCast(ArrayEmpleados.Item(i), Empleado).Rut

                itemEmpleado.Text = nombre + " " + apellido
                itemEmpleado.Value = rut

                Me.DropTrabajador.Items.Add(itemEmpleado)
            Next

            For i = 0 To ArrayGrupo.Count - 1
                Dim itemGrupo As New ListItem

                itemGrupo.Text = DirectCast(ArrayGrupo.Item(i), GrupoUsuario).nombreGrupo
                itemGrupo.Value = DirectCast(ArrayGrupo.Item(i), GrupoUsuario).Id

                Me.DropGrupo.Items.Add(itemGrupo)
            Next
        End If
        Me.BtnEditar.Visible = False
        'Me.BtnIngresar.Visible = False
        Me.BtnEliminar.Visible = False
    End Sub

#Region "Funcionalidades"

    Private Sub CargarUsuario()
        Try
            Dim nombre As String = ""
            Dim apellido As String = ""
            Dim tamaño As Integer = Me.DropTrabajador.Text.ToString.Length
            Dim nombreApellido As String = Me.DropTrabajador.Text
            Dim i As Integer = 0
            Dim j As Integer = 0

            For i = 0 To tamaño - 1
                If nombreApellido.Chars(i) = " " Then
                    Exit For
                End If
                nombre = nombre + nombreApellido.Chars(i)
            Next

            For j = i + 1 To tamaño - 1
                apellido = apellido + nombreApellido.Chars(j)
            Next

            Me.TxTNombreUsuario.Text = nombre.Substring(0, 1) + apellido
            Me.TxTPassword.Text = nombre.Substring(0, 1) + apellido + "MSH123"
            Me.TxTRepitePass.Text = nombre.Substring(0, 1) + apellido + "MSH123"
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub

    Private Sub Clean()
        Me.TxTNombreUsuario.Text = ""
        Me.TxTPassword.Text = ""
        Me.TxTRepitePass.Text = ""
    End Sub

    Private Sub IngresarEditarUsuario()
        Try
            Dim res As Integer
            Dim usuarioTemporalID As String = Me.DropTrabajador.SelectedValue
            Dim usuarioSistema As Usuario
            Dim nameUsuarioID As String = ""
            usuarioSistema = New Usuario("", "")

            If (CL.ObtenerUsuarioFKID(usuarioTemporalID).Count <> 0) Then
                usuarioSistema = DirectCast(CL.ObtenerUsuarioFKID(usuarioTemporalID).Item(0), Usuario)
                nameUsuarioID = usuarioSistema.ID
            Else
                nameUsuarioID = ""
            End If


            If usuarioTemporalID = nameUsuarioID Then
                res = MsgBox("El usuario ya existe en el sistema desea Eliminar/Editar el usuario ", vbQuestion + vbYesNo + vbDefaultButton2, "Aviso")
                If res = "6" Then
                    Me.BtnEditar.Visible = True
                    Me.BtnEliminar.Visible = True
                    Me.BtnIngresar.Visible = False
                    Me.TxTNombreUsuario.ReadOnly = True
                    Me.TxTPassword.Text = usuarioSistema.Password
                    Me.TxTRepitePass.Text = usuarioSistema.Password
                Else
                    Me.BtnIngresar.Visible = True
                    Me.BtnEditar.Visible = False
                    Me.BtnEliminar.Visible = False
                End If
            Else
                Me.BtnIngresar.Visible = True
                Me.BtnEditar.Visible = False
                Me.BtnEliminar.Visible = False
            End If
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub

    Private Sub EliminarUsuario()
        Try
            Dim usuarioEliminar As String = Me.DropTrabajador.SelectedValue
            CL.eliminarUsuarioEmpleado(usuarioEliminar)
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub

    Private Function EditarUsuario() As Boolean
        Try
            Dim nombreEditar As String = Me.TxTNombreUsuario.Text
            Dim passEditar As String = Me.TxTPassword.Text
            Dim repPass As String = Me.TxTRepitePass.Text
            Dim fkEmpleado As String = Me.DropTrabajador.SelectedValue
            Dim query As String = ""

            If (passEditar = repPass) Then
                Dim editUsuario As New Usuario(nombreEditar, passEditar)
                CL.editarUsuario(editUsuario, fkEmpleado)
                Return True
            Else
                MsgBox("Las contraseñas no coinciden intentelo nuevamente")
                Me.BtnEditar.Visible = True
                Me.BtnEliminar.Visible = True
                Return False
            End If
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Function

    Private Sub InsertarUsuario()
        Try
            Dim pass As String = Me.TxTPassword.Text
            Dim repPass As String = Me.TxTRepitePass.Text
            Dim nombre As String = ""
            Dim apellido As String = ""
            Dim rutEmpleado As String = ""
            Dim idGrupo As String = ""
            Dim query As String = ""
            Dim tamaño As Integer = Me.DropTrabajador.Text.ToString.Length
            Dim nombreApellido As String = Me.DropTrabajador.Text
            Dim i As Integer = 0
            Dim j As Integer = 0

            For i = 0 To tamaño - 1
                If nombreApellido.Chars(i) = " " Then
                    Exit For
                End If
                nombre = nombre + nombreApellido.Chars(i)
            Next

            For j = i + 1 To tamaño - 1
                apellido = apellido + nombreApellido.Chars(j)
            Next

            rutEmpleado = Me.DropTrabajador.SelectedValue
            idGrupo = Me.DropGrupo.SelectedValue

            If (pass = repPass) Then
                Dim usuario As New Usuario(Me.TxTNombreUsuario.Text, pass)
                usuario.RefEmpleado = rutEmpleado
                usuario.Grupo = idGrupo
                CL.insertarUsuario(usuario)
                Console.Write("El usuario ha sido insertado exitosamente")
            Else
                Console.Write("Las contraseñas no coinciden por favor intentarlo nuevamente")
                Me.TxTPassword.Text = ""
                Me.TxTRepitePass.Text = ""
            End If
        Catch ex As Exception
            Console.Write(ex.ToString)
        End Try
    End Sub
#End Region

#Region "Botones"



    Protected Sub BtnLimpiar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnLimpiar.Click
        Me.Clean()
    End Sub

    Protected Sub BtnIngresar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnIngresar.Click
        InsertarUsuario()
        Clean()
    End Sub

    Protected Sub BtnEditar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEditar.Click
        Dim resp As Boolean = EditarUsuario()
        If (resp = True) Then
            Console.Write("El usuario a sido editado con exito")
            Clean()
        End If

    End Sub

    Protected Sub BtnEliminar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnEliminar.Click
        EliminarUsuario()
        Console.Write("El usuario a sido eliminado con exito")
        Clean()
    End Sub
#End Region

#Region "Otros eventos"
    Protected Sub DropTrabajador_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropTrabajador.SelectedIndexChanged
        CargarUsuario()
        IngresarEditarUsuario()
    End Sub
#End Region

 
End Class
